Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.01.2016, 12:48
Интересующийся
Отправить личное сообщение для kaspers Посмотреть профиль Найти все сообщения от kaspers
 
Регистрация: 22.11.2015
Сообщений: 14

Подгрузка контента из файла
Добрый день.
есть html код
<a href="#" id="getContent">Загрузить контент</a>
<div id="grid"><div class="block1"></div></div>

скрипт
$(document).ready(function(){
$('#getContent').click(function(){
	var old = $('#grid').html();
	var h = $('#grid').height();
	h = h + 330;
	$('#grid').height(h);
$.ajax({
url: "/content.php",
cache: false,
beforeSend: function() {
$('#grid').html('Получаем контент');
},
success: function(html){
$("#grid").html(old + html);
}
});

return false;
});

});

Необходимо при нажатии на ссылку подгружать доп.код из файлов в блок #grid. Сейчас скрипт работает, но необходимо сделать так, чтобы при первом нажатии загружался файл content.php, при втором content2.php и т.д.
А еще есть проблема в том.. Скрипт писался для того чтобы уменьшить время загрузки страницы, но как я понял, сейчас при нажатии на ссылку весь код из #grid будет загружаться снова и снова. Как это исправить?
Ответить с цитированием
  #2 (permalink)  
Старый 25.01.2016, 13:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Этого $('#grid').html('Получаем контент'); не делать, показывая это сообщение в отдельной панели, а после приема данных
$("#grid").append(html);

Скрипт на сервере должен быть один - content.php, который обрабатывает параметр запроса, номер страниц/блока, а не куча content1.php, content2.php, ... У вас что каждый такой файл по содержанию есть статическая страница с конструкцией echo и все что-ли?
Ответить с цитированием
  #3 (permalink)  
Старый 25.01.2016, 14:11
Интересующийся
Отправить личное сообщение для kaspers Посмотреть профиль Найти все сообщения от kaspers
 
Регистрация: 22.11.2015
Сообщений: 14

$(document).ready(function(){
$('#getContent').click(function(){
	var old = $('#grid').html();
	var h = $('#grid').height();
	h = h + 330;
	$('#grid').height(h);
$.ajax({
url: "/content.php",
cache: false,
success: function(html){
$("#grid").append(old + html);
}
});

return false;
});

});

Так?
На самом деле в php файлах статический код, я переделал их в html, а тут забыл поменять)
Ответить с цитированием
  #4 (permalink)  
Старый 25.01.2016, 15:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

var old = $('#grid').html();

$("#grid").append(old + html); заменить на $("#grid").append(html);

иначе вы постоянно перезаписываете все содержимое $("#grid"), а нужно лишь добавлять к имеющемуся возвращенное сервером.

Сообщение о загрузке оформите блоком с абсолютным позиционированием, показывая его перед началом запроса и скрывая после него.

Статического кода нет, есть статичное содержимое, которое можно хранить в файлах, но зачем же плодить запросы по разным url. Пусть есть статичные файлы, передавайте серверному скрипту content.php параметр определяющий файл. Если именовать файлы по порядку, от 1 до N, то запрос:

$.ajax({
type: "GET",
url: "/content.php",
data: {page=номер файла},
....

где "номер файла" - номер определяющий запрашиваемый файл, который можно хранить в переменной как счетчик увеличивающийся при каждом запросе.

Сервер получая параметр page, проверяет по пути наличие файла и если есть таковой, то подключает его:

if(file_exists('path/' . $_GET['page'] . '.html')) include 'path/' . $_GET['page'] . '.html';


Если файла не существует, к примеру достигнут конец, то сервер ничего не вернет, и на клиенте можно так:

if(!!html) $("#grid").append(html);

Последний раз редактировалось laimas, 25.01.2016 в 15:07.
Ответить с цитированием
  #5 (permalink)  
Старый 25.01.2016, 17:35
Интересующийся
Отправить личное сообщение для kaspers Посмотреть профиль Найти все сообщения от kaspers
 
Регистрация: 22.11.2015
Сообщений: 14

Заменил на $("#grid").append(html), при клике уже имеющийся html код пропадает..
И я не до конца понял про то как менять номер файла.. Хранить нужные подгружаемые элементы в разных html файлах, но выбирать какой именно загружать сейчас в content.php?
Ответить с цитированием
  #6 (permalink)  
Старый 25.01.2016, 17:37
Интересующийся
Отправить личное сообщение для kaspers Посмотреть профиль Найти все сообщения от kaspers
 
Регистрация: 22.11.2015
Сообщений: 14

Извините, с append разобрался.. Больше интересует то, как при повторном нажатии подгружать другой файл
Ответить с цитированием
  #7 (permalink)  
Старый 25.01.2016, 17:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Основной файл, с учетом того, что первая страница (файл) сразу выводится, поэтому счетчик начинается со второй страницы.
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script> 
$(function() {
    var page = 2;
    $('button').click(function() {
        $.ajax({
            url : 'files.php?page='+page,
            type : 'GET',
            success: function(d){
                if(!!d) {
                    $('#content').append(d);
                    page++    
                }
            }
        })
    })
});
</script>     
</head> 
<body>
<div id="content"><p>Содержание 1</p></div>
<button>Следующая</button>
</body> 
</html>


files.php

<?php
$path = 'docs/';
$file = $path . $_GET['page'] . '.html';
if(file_exists($file)) include $file;
?>


Подключаемые файлы в каталоге docs
1.html
<p>Содержание 2</p>

2.html
<p>Содержание 3</p>

и т.д. для примера.

Скопируйте на локальный сервер и запустите.

Последний раз редактировалось laimas, 25.01.2016 в 18:00.
Ответить с цитированием
  #8 (permalink)  
Старый 25.01.2016, 18:28
Интересующийся
Отправить личное сообщение для kaspers Посмотреть профиль Найти все сообщения от kaspers
 
Регистрация: 22.11.2015
Сообщений: 14

Спасибо вам большое)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгруздка внешнего контента в блок и снова подгрузка arahmanov Элементы интерфейса 2 19.01.2014 14:31
Динамическая подгрузка контента при прокрутке assd18 AJAX и COMET 11 14.03.2013 14:05
Подгрузка контента в div Platypus Общие вопросы Javascript 10 09.03.2013 12:27
Подгрузка контента, без перезагрузки панели cyber_bober Элементы интерфейса 2 14.12.2012 13:37
Подгрузка информации через DIV с обработкой файла на стороне сервера Azartno jQuery 1 26.05.2012 15:07